package com.ruoyi.system.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.IOUtil;
import com.ruoyi.common.utils.RedisService;
import com.ruoyi.system.CommonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.CompanySupplyMapper;
import com.ruoyi.system.domain.CompanySupply;
import com.ruoyi.system.service.ICompanySupplyService;

/**
 * 公司-供货商绑定关系Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-08-01
 */
@Service
public class CompanySupplyServiceImpl implements ICompanySupplyService 
{
    @Autowired
    RedisService redis;
    @Autowired
    private CompanySupplyMapper companySupplyMapper;
    @Autowired
    private CommonService commonService;


    /**
     * 重新给手机号发送验证码
     * @return
     */
    @Override
    public AjaxResult reSendMSG(long scid) {
        CompanySupply companySupply = companySupplyMapper.selectCompanySupplyById(scid);
        String company = companySupply.getCompany();
        String status =companySupply.getStatus();
        String phone =companySupply.getSphone();
        long companyId = companySupply.getCompanyId();
        //判断状态
        if(!status.equals("0"))return AjaxResult.error("该手机号码已经绑定成功，请勿重复操作！");

        //新增绑定时已经验证手机号，这里不需要再验证了
        //直接发送验证码
        String code = IOUtil.getCode(6);
        redis.setVal(phone+"#"+code,companySupply.getCompanyId() , 10);
        int res = commonService.sendMsg(phone, "验证码："+code);

        return AjaxResult.int2Ajax(res);
    }

    /**
     * 查询公司-供货商绑定关系
     * 
     * @param id 公司-供货商绑定关系主键
     * @return 公司-供货商绑定关系
     */
    @Override
    public CompanySupply selectCompanySupplyById(Long id)
    {
        return companySupplyMapper.selectCompanySupplyById(id);
    }

    /**
     * 查询公司-供货商绑定关系列表
     * 
     * @param companySupply 公司-供货商绑定关系
     * @return 公司-供货商绑定关系
     */
    @Override
    public List<CompanySupply> selectCompanySupplyList(CompanySupply companySupply)
    {
        return companySupplyMapper.selectCompanySupplyList(companySupply);
    }

    /**
     * 新增公司-供货商绑定关系
     * 
     * @param companySupply 公司-供货商绑定关系
     * @return 结果
     */
    @Override
    public AjaxResult insertCompanySupply(CompanySupply companySupply)
    {
        //供应商手机号
        String sphone = companySupply.getSphone();
        //判断该号码是否存在，是否已经绑定本公司
        Map<String, Object> map = companySupplyMapper.checkSupplyPhone(companySupply.getCompanyId(),sphone);
        if(map==null||!map.containsKey("id"))return AjaxResult.error("未查询到供应商，请输入正确的手机号！");
        if(map.containsKey("supply_id"))return AjaxResult.error("您已经绑定该供货商，请勿重复绑定！");

        //如果没绑定，则存入redis，key=手机号#公司ID value=验证码，10分钟有效——变成直接绑定，无需确认
//        String code = IOUtil.getCode(6);
//        redis.setVal(sphone+"#"+code,companySupply.getCompanyId() , 10*60);
//        //发送手机验证码
//        commonService.sendMsg(sphone, "验证码："+code);

        companySupply.setSupplyId(Long.valueOf((Integer) map.get("id")));
        companySupply.setStatus("1");//直接变成已绑定状态
        int res = companySupplyMapper.insertCompanySupply(companySupply);
        return AjaxResult.int2Ajax(res);
    }

    /**
     * 修改公司-供货商绑定关系
     * 
     * @param companySupply 公司-供货商绑定关系
     * @return 结果
     */
    @Override
    public int updateCompanySupply(CompanySupply companySupply)
    {
        return companySupplyMapper.updateCompanySupply(companySupply);
    }

    /**
     * 批量删除公司-供货商绑定关系
     * 
     * @param ids 需要删除的公司-供货商绑定关系主键
     * @return 结果
     */
    @Override
    public int deleteCompanySupplyByIds(Long[] ids)
    {
        return companySupplyMapper.deleteCompanySupplyByIds(ids);
    }

    /**
     * 删除公司-供货商绑定关系信息
     * 
     * @param id 公司-供货商绑定关系主键
     * @return 结果
     */
    @Override
    public int deleteCompanySupplyById(Long id)
    {
        return companySupplyMapper.deleteCompanySupplyById(id);
    }
}
